import SparkMD5 from 'spark-md5'

// 计算哈希====增量计算
onmessage = (e) => {
  const chunks = e.data

  // md5计算哈希
  const spark = new SparkMD5.ArrayBuffer()

  function _read(i) {
    if (i >= chunks.length) {
      // end：用于计算最终的MD5值
      postMessage(spark.end())
      return
    }

    // 创建一个 FileReader 对象，用于读取 Blob 或 File 对象的内容。
    const reader = new FileReader()
    // 读取Blob或File的内容
    reader.readAsArrayBuffer(chunks[i])

    // reader.onload 是 FileReader 的一个事件监听器，当读取操作完成时会触发该事件。
    reader.onload = e => {
      // ArrayBuffer 对象用来表示通用的原始二进制数据缓冲区
      // 他是一个字节数组
      const byte = e.target?.result
      // console.log(byte)
      // append：追加数据
      spark.append(byte)
      _read(++i)
    }
  }

  _read(0)
}
